<?php
/**
 * Implenta las funciones necesarias para gestionar un usuario del sistema
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBUsuarioDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

    /**
     *Devuelve un vector con toda la informacion del usuario que tenga el id
     * que entra por parametro
     *
     * @param <int> $id
     * @return <Array> $fila
     * @return <bool> false
     * @test
     */
    public function getUsuario( $id ) {
        $this->DBConn->consulta( "SELECT *
                            FROM usuario
                            WHERE USR_ID = $id
                            AND USR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila;
        } else {
            return false;
        }

    }

    /**
     * Setea un bloque con la informacion del usuario
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockUsuarios( Panel $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM usuario
                            WHERE USR_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat($hBlock);
        }

    }

    /**
     * Introduce un usuario nuevo a la base de datos
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     */
    public function setUsuario() {
        extract( $_POST );
        $USR_DIRECCION = addslashes($USR_DIRECCION);

        if ( isset ( $USR_ID ) ){
        $this->DBConn->consulta( "INSERT INTO Usuario
                            VALUES ($USR_ID,$USR_CEDULA,'$USR_NOMBRE',
                            '$USR_APELLIDO','$USR_DIRECCION','$USR_TELEFONO','$USR_TELEFONO_OTRO',
                            '$USR_EMAIL','$USR_CLAVE','$USR_PRIVILEGIO',1)" );
        } else {
        $this->DBConn->consulta( "INSERT INTO Usuario
                            VALUES (NULL,$USR_CEDULA,'$USR_NOMBRE',
                            '$USR_APELLIDO','$USR_DIRECCION','$USR_TELEFONO','$USR_TELEFONO_OTRO',
                            '$USR_EMAIL','$USR_CLAVE','$USR_PRIVILEGIO',1)" );
        }
        
        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }
        
    }

    /**
     * Actualiza un usuario del sistema
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     */
    public function updateUsuario(){
        extract ( $_POST );
        $USR_DIRECCION = addslashes($USR_DIRECCION);
        
        $this->DBConn->consulta( "UPDATE Usuario
                            SET USR_CEDULA = $USR_CEDULA,
                            USR_NOMBRE = '$USR_NOMBRE',
                            USR_APELLIDO = '$USR_APELLIDO',
                            USR_DIRECCION = '$USR_DIRECCION',
                            USR_TELEFONO = '$USR_TELEFONO',
                            USR_TELEFONO_OTRO = '$USR_TELEFONO_OTRO',
                            USR_EMAIL = '$USR_EMAIL',
                            USR_CLAVE = '$USR_CLAVE',
                            USR_PRIVILEGIO = '$USR_PRIVILEGIO'
                            WHERE USR_ID = $USR_ID" );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }
        
    }

    /**
    * Eliminacion de un usuario en base de datos
    *
    * @return <bool> true
    * @return <bool> false
    * @test
    */
    public function eliminarUsuario(){
        extract( $_GET );
        if( $_SESSION['USR_ID'] != $USR_ID ){
            $this->DBConn->consulta( "UPDATE Usuario
                                SET USR_STATUS = 0
                                WHERE USR_ID = $USR_ID" );

            if ( $this->DBConn->filasAfectadas() != -1){
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}

?>
